鐵人賽執行至今,我才深刻體會到 3D Tutting 模擬器如果只有演算法,編舞效率其實非常低落。
當你真正坐下來、準備編排一套 32 拍的完整 Tutting 招式時,你會發現最大的痛苦往往不是「算式不準」,而是「操作效率太慢」——手滑調錯角度要重來、雙手對稱要手動調兩次、還得不斷用滑鼠旋轉視角確認手框有沒有歪。
今天 DAY 19,我們要暫時放下關節演算法,為我們的模擬器注入 5 大生產力輔助設計功能,讓編舞體驗直接提升一個量級!



有了這 5 大輔助設計功能,我們的 Tutting 模擬器不僅具備硬核的算式底層,更真正轉化為一套符合專業舞蹈創作者直覺的現代化 3D 繪圖軟體!
# Prompt — 5 大輔助功能
---
**(本次新增,共 5 項)**
1. **自動存檔**:`localStorage`,debounce 1.5秒寫入,存 `keyframes[]`/軌跡控制點座標/路徑模式/BPM/Easing-拍數預設。載入時偵測到存檔會 `confirm()` 詢問是否還原。右上角有淡入淡出的「已自動儲存 HH:MM:SS」提示。
2. **Undo/Redo(角度層級)**:涵蓋姿勢庫切換、隨機姿勢、鏡像、JSON套用、關節拖曳放開、此關節歸零、拍點增刪改、Easing/拍數調整、軌跡生成拍點。**刻意不含** IK目標球位置/開關、身體即時位置(複雜度不成比例)。`Ctrl+Z`/`Ctrl+Shift+Z` 快捷鍵,History stack 上限 50 筆。
3. **鏡像(Mirror)**:世界空間四元數鏡射公式 `(x,-y,-z,w)` + 由上而下沿骨架階層重建本地旋轉,**非猜測式的軸符號表**,數學正確性已用 Node.js 合成對稱骨架模擬驗證(位置/朝向誤差 <1e-15,雙重鏡像可還原原姿勢)。已知限制:若肢體正開著IK,鏡像後下一幀會被IK即時解算覆蓋(IK目標球不會跟著鏡像)。
4. **幾何鏡頭(輕量版)**:正面/背面/左側/右側/俯視/45°六個預設視角按鈕,按角色身高比例換算相機位置,500ms easeInOutQuad 平滑過渡到位(不是瞬間跳)。沒有另外做正交相機。
5. **洋蔥皮(Onion Skinning)**:用 `SkeletonUtils.clone(model)` 複製兩份獨立骨架的半透明殘影(青色=上一拍、洋紅=下一拍),只在「選取某拍點」且「時間軸分頁」時顯示,只在拍點清單重繪時才重新計算姿勢(非每幀)。